package day23.homework;

import java.util.Comparator;
import java.util.TreeSet;

/**
 * Teacher类的测试类（使用Lambda表达式版本）
 * 演示使用Java 8的Lambda表达式和方法引用特性创建Comparator
 */
public class TeacherLambdaTest {
    /**
     * 主方法，程序入口
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        System.out.println("=== 使用Lambda表达式和Comparator.comparing方法排序 ===");
        testWithLambdaComparator();
    }
    
    /**
     * 使用Lambda表达式和Comparator.comparing方法进行排序
     * 利用Java 8的新特性简化比较器的创建
     */
    public static void testWithLambdaComparator() {
        // 使用Lambda表达式和方法引用创建Comparator
        // 排序规则：
        // 1. 首先按姓名排序（字典序）
        // 2. 姓名相同时按年龄排序（升序）
        // 3. 年龄相同时按ID排序（升序）
        Comparator<Teacher> teacherComparator = Comparator
                .comparing(Teacher::getName)          // 按姓名排序
                .thenComparing(Teacher::getAge)       // 姓名相同时按年龄排序
                .thenComparing(Teacher::getId);       // 年龄相同时按ID排序
        
        // 创建TreeSet集合，使用Lambda表达式创建的比较器
        TreeSet<Teacher> teachers = new TreeSet<>(teacherComparator);
        
        // 添加测试数据
        teachers.add(new Teacher(3, "张三", 30));
        teachers.add(new Teacher(1, "李四", 25));
        teachers.add(new Teacher(5, "张三", 30));
        teachers.add(new Teacher(2, "王五", 35));
        teachers.add(new Teacher(4, "张三", 25));
        teachers.add(new Teacher(6, "李四", 25));
        
        System.out.println("排序结果：");
        // 遍历并打印排序后的结果
        for (Teacher teacher : teachers) {
            System.out.println(teacher);
        }
    }
}